package com.dc.commons.jpa.repository.factory;

import java.io.Serializable;

import javax.persistence.EntityManager;

import org.springframework.data.jpa.repository.support.JpaEntityInformation;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.RepositoryMetadata;

import com.dc.commons.jpa.repository.support.DcJpaRepository;
import com.dc.commons.persistence.able.IDAble;

/*******************************************************************************<P>
 * 文件名: DcRepositoryFactory.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年4月19日 下午6:06:40<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
public class DcRepositoryFactory extends JpaRepositoryFactory{

	 public DcRepositoryFactory(EntityManager entityManager) {  
	        super(entityManager);  
	    }  
	 

	@Override
	protected <T, ID extends Serializable> SimpleJpaRepository<?, ?> getTargetRepository(
			RepositoryInformation information, EntityManager entityManager) {
		 
			@SuppressWarnings("unchecked")
			JpaEntityInformation<? extends IDAble, ?> entityMetadata=(JpaEntityInformation<? extends IDAble, ?>) super.getEntityInformation(information.getDomainType());
			return new DcJpaRepository(entityMetadata, entityManager);
	}




		/* 
	     * (non-Javadoc) 
	     *  
	     * @see 
	     * org.springframework.data.repository.support.RepositoryFactorySupport# 
	     * getRepositoryBaseClass() 
	     */  
	    @Override  
	    protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {  
	  
	        return DcJpaRepository.class;  
	    }  
}
